#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2023/7/17 22:28
# @Author  : BadMan
# @FileName: 02 函数对象.py
#
# # 1. 定义一个函数
# def foo():
#     print("foo")
#     return 1,2,3
# l1 = [foo,foo]
# print(l1) # 打印的是内存地址
# l1[0]() # foo
# l1[1]() # foo

# def foo2(value=None):  # 默认参数，如果不传递参数那就默认为None
#     print(value)  # None
# foo2(value=None)  # None
# foo2(3)  # 3
# **接受任意长度的参数，并以元组的形式返回(并收集在一个元组内)**
# def foo(*args):  # 适用于的场景，实参可能有多个或者没有
#     print(args)
#
# foo(1,2,3,4)
# foo("a")
# foo()

# # **位置参数和可变长度参数配合传参**
# def foo(value,*args):
#     print(value,args)
# foo(1,2,3,4,5)  # 第一个参数按照位置传参，剩余都都由*args接受，并返回一个元组


# v**传入任意长度的关键字参数 -- > 返回一个字典**
# def foo(**kwargs):
#     print(kwargs)
# foo()
# foo(a=1, b=2)
# foo(a=1,b=2)

# 接收任意长度的位置参数和key=value形式的参数，
# 且` kwargs` 必须放在 `args` 后面
def foo(*args, **kwargs):
    print(args, kwargs)


foo(1, 2, 3, 4, a=5, b=6)  # 切记 kwargs 必须放在 args后面

"""
def foo()  # 无参
def foo(b)  # 传一个参
def foo(a, b)  # 2ge
def foo(a, b = None)  # 传一个，一个客串可不穿
def foo(a=None,b=None)  # 两个客串可不穿
def foo(*args,**kwargs)  # 两个客串可不穿
"""